#include <head.h>

int sock_fd;

int UDP_init( in_port_t port )
{
    // 1、创建用户数据报 套接字  SOCK_DGRAM
    sock_fd = socket(AF_INET , SOCK_DGRAM , 0);
    if (-1 == sock_fd)
    {
        ERRLOG("套接字创建错误");
        return 0;
    }
    
    // 2、填充服务器网络信息结构体
    // 填写信息结构体
        // 使用的是 IPV4 网络信息结构体  不用使用通用信息结构体
    struct sockaddr_in server_addr;
        // 清空结构体
    memset(&server_addr , 0 , sizeof(server_addr));
        // 确定协议 选择 IPV4
    server_addr.sin_family = AF_INET;
        // 端口号
    server_addr.sin_port = htons(port);  // 端口号可以随意指定
        // IP地址
    server_addr.sin_addr.s_addr = inet_addr("0.0.0.0");
    // 3、将套接字与服务器的网络信息结构体绑定
    if(-1 == bind(sock_fd , (struct sockaddr *)&server_addr , sizeof(server_addr) ))
    {
        ERRLOG("套接字绑定错误");
        close(sock_fd);
        return 0;
    }

    // 返回套接字
    return sock_fd;
}

void UDP_close(void)
{
    // 关闭套接字
    close(sock_fd);
}

